/**
 * Project Name:SimonFramework
 * File Name:ImageLoadingListener.java
 * Package Name:com.simon.framework.image.core.listener
 * Date:2016-5-19 下午3:48:52
 * Copyright (c) 2016, simon@cmonbaby.com All Rights Reserved.
 */
package com.cmonbaby.images.core.listener;

import android.graphics.Bitmap;
import android.view.View;

import com.cmonbaby.images.core.assist.FailReason;

/**
 * <p>Author:      Simon
 * <p>QO:          8950764
 * <p>Email:       simon@cmonbaby.com
 * <p>WebSize:     https://www.cmonbaby.com
 * <p>Version:     1.0.0
 * <p>Date:        2020/12/29
 * <p>Description: 图像加载过程中的监听器。你可以使用simpleimageloadinglistener实现只需要的方法。
 */
public interface ImageLoadingListener {

    /**
     * 图像加载任务开始时调用
     *
     * @param imageUri 加载图像的URI
     * @param view     图像的视图
     */
    void onLoadingStarted(String imageUri, View view);

    /**
     * 当图像加载发生错误时调用
     *
     * @param imageUri   加载图像的URI
     * @param view       图像的视图. 可以为 <b>null</b>.
     * @param failReason {@linkplain com.cmonbaby.images.core.assist.FailReason The reason}
     *                   为什么图片加载失败
     */
    void onLoadingFailed(String imageUri, View view, FailReason failReason);

    /**
     * 成功加载图像时调用(并显示在指定的视图)
     *
     * @param imageUri    加载图像的URI
     * @param view        图像的视图. 可以为 <b>null</b>.
     * @param loadedImage 加载和解码图像的位图
     */
    void onLoadingComplete(String imageUri, View view, Bitmap loadedImage);

    /**
     * 图像加载任务被取消了因为视图图像被重用在新任务时调用
     *
     * @param imageUri 加载图像的URI
     * @param view     图像的视图. 可以为 <b>null</b>.
     */
    void onLoadingCancelled(String imageUri, View view);

}

